package com.aviatorscript.aviatorscript.mapper;

import com.aviatorscript.aviatorscript.entity.FieldMappingRule;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 字段映射规则Mapper接口
 * 继承MyBatis-Plus的BaseMapper，提供基础的CRUD操作
 */
@Mapper
public interface FieldMappingRuleMapper extends BaseMapper<FieldMappingRule> {

    /**
     * 根据转换规则ID查询字段映射规则列表
     * @param ruleId 转换规则ID
     * @return 字段映射规则列表
     */
    List<FieldMappingRule> selectByRuleId(@Param("ruleId") Long ruleId);

    /**
     * 根据转换规则ID查询启用的字段映射规则列表（按排序顺序）
     * @param ruleId 转换规则ID
     * @return 启用的字段映射规则列表
     */
    List<FieldMappingRule> selectEnabledByRuleId(@Param("ruleId") Long ruleId);

    /**
     * 根据转换规则ID删除所有字段映射规则
     * @param ruleId 转换规则ID
     * @return 删除影响行数
     */
    int deleteByRuleId(@Param("ruleId") Long ruleId);

    /**
     * 批量插入字段映射规则
     * @param fieldMappingRules 字段映射规则列表
     * @return 插入影响行数
     */
    int batchInsert(@Param("list") List<FieldMappingRule> fieldMappingRules);

    /**
     * 根据转换规则ID和映射类型查询字段映射规则
     * @param ruleId 转换规则ID
     * @param mappingType 映射类型
     * @return 字段映射规则列表
     */
    List<FieldMappingRule> selectByRuleIdAndMappingType(@Param("ruleId") Long ruleId, 
                                                       @Param("mappingType") String mappingType);
} 